import diff from './diff';

export default function updateComponent(virtualDOM, oldComponent, oldDOM, container) {
  // 执行生命周期函数
  oldComponent.componentWillReceiveProps(virtualDOM.props);

  // 执行生命周期函数
  if (oldComponent.shouldComponentUpdate()) {
    // 未更新之前的 props
    let prevProps = oldComponent.props;

    // 执行生命周期函数
    oldComponent.componentWillUpdate(virtualDOM.props);

    // 组件更新 props
    oldComponent.updateProps(virtualDOM.props);
    // render 获取最新的 virtualDOM
    let nextVirtualDOM = oldComponent.render();
    nextVirtualDOM.component = oldComponent;
    diff(nextVirtualDOM, container, oldDOM);

    // 执行生命周期函数
    oldComponent.componentDidUpdate(prevProps);
  }
}
